﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MJM.SPP.AccesoDatos;
using MJM.SPP.EntidadesNegocio;
using System.Data;

namespace MJM.SPP.ComponentesNegocio
{
    public class ColumCodigoCN
    {
        public static ColumCodigoAD objColumCodigoAD = new ColumCodigoAD();

        public int Insertar(ColumCodigoEN obj)
        {
            return objColumCodigoAD.Insertar(obj);
        }

        public List<ColumCodigoEN> ObtenerCodigos(string Usuario)
        {
            List<ColumCodigoEN> lst = objColumCodigoAD.Listar(Usuario);
            for (int i = 1; i <= 10; i++)
                lst[i - 1].CODCOL_inFLAELI = i;
            return lst;
        }

        public DataSet MatrizxCodigo(string Codigo)
        {
            DataSet ds = new DataSet();
            List<ColumCodigoEN> lst = objColumCodigoAD.ListarxCodigo(Codigo);

            DataTable dt = new DataTable();
            dt.Columns.Add("CODCOL_P_inID", typeof(int));
            dt.Columns.Add("ASITAR_P_inID", typeof(int));
            dt.Columns.Add("CODCOL_inCOLA", typeof(int));
            dt.Columns.Add("CODCOL_inCOLB", typeof(int));
            dt.Columns.Add("CODCOL_inCOLC", typeof(int));
            dt.Columns.Add("CODCOL_inCOLD", typeof(int));
            dt.Columns.Add("CODCOL_inCOLE", typeof(int));
            dt.Columns.Add("CODCOL_inCOLF", typeof(int));
            dt.Columns.Add("CODCOL_inCOLG", typeof(int));
            dt.Columns.Add("CODCOL_inCOLH", typeof(int));
            dt.Columns.Add("CODCOL_inCOLI", typeof(int));
            dt.Columns.Add("CODCOL_inCOLJ", typeof(int));
            dt.Columns.Add("CODCOL_chFECREG", typeof(string));
            dt.Columns.Add("CODCOL_inFLAELI", typeof(int));
            dt.Columns.Add("ASITAR_chCODTAR", typeof(string));

            DataRow rw;
            for (int i = 1; i <= 10; i++)
            {
                lst[i - 1].CODCOL_inFLAELI = i;
                rw = dt.NewRow();
                rw["CODCOL_P_inID"] = lst[i - 1].CODCOL_P_inID;
                rw["ASITAR_P_inID"] = lst[i - 1].ASITAR_P_inID;
                rw["CODCOL_inCOLA"] = lst[i - 1].CODCOL_inCOLA;
                rw["CODCOL_inCOLB"] = lst[i - 1].CODCOL_inCOLB;
                rw["CODCOL_inCOLC"] = lst[i - 1].CODCOL_inCOLC;
                rw["CODCOL_inCOLD"] = lst[i - 1].CODCOL_inCOLD;
                rw["CODCOL_inCOLE"] = lst[i - 1].CODCOL_inCOLE;
                rw["CODCOL_inCOLF"] = lst[i - 1].CODCOL_inCOLF;
                rw["CODCOL_inCOLG"] = lst[i - 1].CODCOL_inCOLG;
                rw["CODCOL_inCOLH"] = lst[i - 1].CODCOL_inCOLH;
                rw["CODCOL_inCOLI"] = lst[i - 1].CODCOL_inCOLI;
                rw["CODCOL_inCOLJ"] = lst[i - 1].CODCOL_inCOLJ;
                rw["CODCOL_chFECREG"] = lst[i - 1].CODCOL_chFECREG;
                rw["CODCOL_inFLAELI"] = lst[i - 1].CODCOL_inFLAELI;
                rw["ASITAR_chCODTAR"] = lst[i - 1].ASITAR_chCODTAR;
                dt.Rows.Add(rw);
            }
            dt.TableName = "Table";
            ds.Tables.Add(dt);

            return ds;
        }

        public List<DataRow> Matrices(String codigo1,String codigo2)
        {
            //DataSet ds = new DataSet();
            List<ColumCodigoEN> lst = objColumCodigoAD.ListarxCodigo(codigo1);
            List<ColumCodigoEN> lst2 = objColumCodigoAD.ListarxCodigo(codigo2);

            DataTable dt = new DataTable();
            dt.Columns.Add("CODCOL_P_inID", typeof(int));
            dt.Columns.Add("ASITAR_P_inID", typeof(int));
            dt.Columns.Add("CODCOL_inCOLA", typeof(int));
            dt.Columns.Add("CODCOL_inCOLB", typeof(int));
            dt.Columns.Add("CODCOL_inCOLC", typeof(int));
            dt.Columns.Add("CODCOL_inCOLD", typeof(int));
            dt.Columns.Add("CODCOL_inCOLE", typeof(int));
            dt.Columns.Add("CODCOL_inCOLF", typeof(int));
            dt.Columns.Add("CODCOL_inCOLG", typeof(int));
            dt.Columns.Add("CODCOL_inCOLH", typeof(int));
            dt.Columns.Add("CODCOL_inCOLI", typeof(int));
            dt.Columns.Add("CODCOL_inCOLJ", typeof(int));
            dt.Columns.Add("CODCOL_chFECREG", typeof(string));
            dt.Columns.Add("CODCOL_inFLAELI", typeof(int));
            dt.Columns.Add("ASITAR_chCODTAR", typeof(string));
            dt.Columns.Add("CODCOL_P_inID2", typeof(int));
            dt.Columns.Add("ASITAR_P_inID2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLA2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLB2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLC2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLD2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLE2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLF2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLG2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLH2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLI2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLJ2", typeof(int));
            dt.Columns.Add("CODCOL_chFECREG2", typeof(string));
            dt.Columns.Add("CODCOL_inFLAELI2", typeof(int));
            dt.Columns.Add("ASITAR_chCODTAR2", typeof(string));
            DataRow rw;
            List<DataRow> lstRows= new List<DataRow>();
            for (int i = 1; i <= 10; i++)
            {
                lst[i - 1].CODCOL_inFLAELI = i;
                lst2[i - 1].CODCOL_inFLAELI = i;
                rw = dt.NewRow();
                rw["CODCOL_P_inID"] = lst[i - 1].CODCOL_P_inID;
                rw["ASITAR_P_inID"] = lst[i - 1].ASITAR_P_inID;
                rw["CODCOL_inCOLA"] = lst[i - 1].CODCOL_inCOLA;
                rw["CODCOL_inCOLB"] = lst[i - 1].CODCOL_inCOLB;
                rw["CODCOL_inCOLC"] = lst[i - 1].CODCOL_inCOLC;
                rw["CODCOL_inCOLD"] = lst[i - 1].CODCOL_inCOLD;
                rw["CODCOL_inCOLE"] = lst[i - 1].CODCOL_inCOLE;
                rw["CODCOL_inCOLF"] = lst[i - 1].CODCOL_inCOLF;
                rw["CODCOL_inCOLG"] = lst[i - 1].CODCOL_inCOLG;
                rw["CODCOL_inCOLH"] = lst[i - 1].CODCOL_inCOLH;
                rw["CODCOL_inCOLI"] = lst[i - 1].CODCOL_inCOLI;
                rw["CODCOL_inCOLJ"] = lst[i - 1].CODCOL_inCOLJ;
                rw["CODCOL_chFECREG"] = lst[i - 1].CODCOL_chFECREG;
                rw["CODCOL_inFLAELI"] = lst[i - 1].CODCOL_inFLAELI;
                rw["ASITAR_chCODTAR"] = lst[i - 1].ASITAR_chCODTAR;
                rw["CODCOL_P_inID2"] = lst2[i - 1].CODCOL_P_inID;
                rw["ASITAR_P_inID2"] = lst2[i - 1].ASITAR_P_inID;
                rw["CODCOL_inCOLA2"] = lst2[i - 1].CODCOL_inCOLA;
                rw["CODCOL_inCOLB2"] = lst2[i - 1].CODCOL_inCOLB;
                rw["CODCOL_inCOLC2"] = lst2[i - 1].CODCOL_inCOLC;
                rw["CODCOL_inCOLD2"] = lst2[i - 1].CODCOL_inCOLD;
                rw["CODCOL_inCOLE2"] = lst2[i - 1].CODCOL_inCOLE;
                rw["CODCOL_inCOLF2"] = lst2[i - 1].CODCOL_inCOLF;
                rw["CODCOL_inCOLG2"] = lst2[i - 1].CODCOL_inCOLG;
                rw["CODCOL_inCOLH2"] = lst2[i - 1].CODCOL_inCOLH;
                rw["CODCOL_inCOLI2"] = lst2[i - 1].CODCOL_inCOLI;
                rw["CODCOL_inCOLJ2"] = lst2[i - 1].CODCOL_inCOLJ;
                rw["CODCOL_chFECREG2"] = lst2[i - 1].CODCOL_chFECREG;
                rw["CODCOL_inFLAELI2"] = lst2[i - 1].CODCOL_inFLAELI;
                rw["ASITAR_chCODTAR2"] = lst2[i - 1].ASITAR_chCODTAR;
                //dt.Rows.Add(rw);
                lstRows.Add(rw);
            }
            dt.TableName = "Table";
            return lstRows;
        }

        public DataSet ListaMatrices(List<String> lstCodigos)
        { 
            DataSet ds=new DataSet();
            DataTable dt = new DataTable();
           // DataTable dtAux=new DataTable();
            List<DataRow> lstRows;
            dt.Columns.Add("CODCOL_P_inID", typeof(int));
            dt.Columns.Add("ASITAR_P_inID", typeof(int));
            dt.Columns.Add("CODCOL_inCOLA", typeof(int));
            dt.Columns.Add("CODCOL_inCOLB", typeof(int));
            dt.Columns.Add("CODCOL_inCOLC", typeof(int));
            dt.Columns.Add("CODCOL_inCOLD", typeof(int));
            dt.Columns.Add("CODCOL_inCOLE", typeof(int));
            dt.Columns.Add("CODCOL_inCOLF", typeof(int));
            dt.Columns.Add("CODCOL_inCOLG", typeof(int));
            dt.Columns.Add("CODCOL_inCOLH", typeof(int));
            dt.Columns.Add("CODCOL_inCOLI", typeof(int));
            dt.Columns.Add("CODCOL_inCOLJ", typeof(int));
            dt.Columns.Add("CODCOL_chFECREG", typeof(string));
            dt.Columns.Add("CODCOL_inFLAELI", typeof(int));
            dt.Columns.Add("ASITAR_chCODTAR", typeof(string));
            dt.Columns.Add("CODCOL_P_inID2", typeof(int));
            dt.Columns.Add("ASITAR_P_inID2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLA2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLB2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLC2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLD2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLE2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLF2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLG2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLH2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLI2", typeof(int));
            dt.Columns.Add("CODCOL_inCOLJ2", typeof(int));
            dt.Columns.Add("CODCOL_chFECREG2", typeof(string));
            dt.Columns.Add("CODCOL_inFLAELI2", typeof(int));
            dt.Columns.Add("ASITAR_chCODTAR2", typeof(string));
            //DataRow rw;
            int cantidad = lstCodigos.Count;
            if (cantidad % 2 == 0)
                for (int i = 0; i < cantidad; i = i + 2)
                {
                    lstRows = Matrices(lstCodigos[i], lstCodigos[i + 1]);
                    for (int j = 0; j < 10; j++)
                    {                        
                        dt.Rows.Add(lstRows[j]);
                    }
                }
            else
            {
                for (int i = 0; i < cantidad - 1; i = i + 2)
                {
                    lstRows = Matrices(lstCodigos[i], lstCodigos[i + 1]);
                    for (int j = 0; j < 10; j++)
                    {
                        dt.Rows.Add(lstRows[j]);
                    }                    
                }
                lstRows = Matrices(lstCodigos[cantidad-1], "");
                for (int j = 0; j < 10; j++)
                {
                    dt.Rows.Add(lstRows[j]);
                }
            }

            ds.Tables.Add(dt);
            return ds;
        }
    }
}
